package com.patterns.bridge.demo;

/**
 * 桥接模式
 * Computer为品牌和机型之间的桥梁
 * 引用品牌
 * 整个结构如果想增加品牌，只需要实现Brand接口即可
 * 如果想增加机型，只需要继承Computer即可，不需要每个都添加一遍
 * @author huangke
 *
 */
public class Computer {
	protected Brand brand;
	public Computer(Brand brand) {
		this.brand = brand;
	}
	
	public void sale(){
		brand.sale();
	}
}

class DesktopComputer extends Computer{

	public DesktopComputer(Brand brand) {
		super(brand);
	}
	
	@Override
	public void sale() {
		super.sale();// 此句是为了调用父类传递的品牌方法，可用brand.sale();替代
		System.out.println("销售台式机电脑");
	}
}

class NotebookComputer extends Computer{

	public NotebookComputer(Brand brand) {
		super(brand);
	}
	
	@Override
	public void sale() {
		super.sale(); // 此句是为了调用父类传递的品牌方法，可用brand.sale();替代
		System.out.println("销售笔记本电脑");
	}
}

class PadComputer extends Computer{

	public PadComputer(Brand brand) {
		super(brand);
	}
	
	@Override
	public void sale() {
		super.sale();// 此句是为了调用父类传递的品牌方法，可用brand.sale();替代
		System.out.println("销售平板电脑");
	}
}
